/**
 * Copyright (C), 2020, 安徽贝慕信息科技有限公司
 * FileName: UriKeyResolver
 * Author:   Allen
 * Date:     2020/08/21 14:39
 * Description: 使用请求uri作为key进行网关限流
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.bim.marvel.gateway.ratelimit;

import org.springframework.cloud.gateway.filter.ratelimit.KeyResolver;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import org.springframework.web.server.ServerWebExchange;
import reactor.core.publisher.Mono;

/**
 * 〈使用请求uri作为key进行网关限流〉
 *
 * @author Allen
 * @date 2020/08/21
 * @since 1.0.0
 */
@Component
@Primary
public class UriKeyResolver implements KeyResolver {
    /**
     * 使用请求路径作为网关限流的key
     * @param exchange 请求上下文
     * @return 请求上下文中的请求路径
     */
    @Override
    public Mono<String> resolve(ServerWebExchange exchange) {
        return Mono.just(exchange.getRequest().getURI().getPath());
    }
}
